package com.xjc.study.operatingexamination.od.test202312;

import java.util.Scanner;

/**
 * @author xujiucheng
 * @Description: 合法工号
 * 有一批杂乱的字符串，请逐个判断每个字符串是否是合法的工号，把非法的直接丢弃，并将合法的整理成规定的格式。
 * 合法工号：去除所有空格后，长度不超过9；首位为字母、其它均为数字（至少有一个数字）。
 * 格式化要求（格式化后如：a00012345）：工号首字母统一规整成小写字符。去除所有空格。
 * 如果工号不满9位，在数字前面补零，使工号长度恰好为9。
 * 请对格式化后的合法工号，去重后，按照字典序升序输出。
 * 解答要求时间限制：1000ms, 内存限制：256MB
 * 例如
 * input
 * A1
 * output
 * a00000001
 * @date 2023-12-05 11:11
 */
public class LegalWorkNumber {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String oldNo = scanner.nextLine();
            oldNo = oldNo.replaceAll(" ","");
            System.out.println(getLegalWorkNumber(oldNo));
        }
    }

    public static  String getLegalWorkNumber(String oldNo) {
        int legalWorkNumberLength = 9;
        if (oldNo.length() > legalWorkNumberLength || oldNo.length() < 1) {
            return "非法";
        }
        if (!Character.isLetter(oldNo.charAt(0))) {
            return "非法";
        }
        for (int i = 1; i < oldNo.length() - 1; i++) {
            if (!Character.isDigit(oldNo.charAt(i))) {
                return "非法";
            }
        }
        // 第一位为小写字母 后8位不足8位在原始数字前补0  %08d代表8位数字前补0
        return Character.toLowerCase(oldNo.charAt(0)) +
                (oldNo.length() == 1 ? "00000000" : String.format("%08d", Integer.parseInt(oldNo.substring(1))));
    }
}
